package com.devil.mcp.config;

import com.devil.mcp.tools.ArticleInfoTools;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.tool.method.MethodToolCallbackProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author Devil
 * @version 1.0
 * @description 工具配置类
 * @date 2025/4/11 22:53
 */
@Configuration
public class ToolsConfiguration {

    /**
     * 文章信息工具注册Bean
     *
     * <p>该配置方法将文章信息相关工具封装为Spring AI可识别的工具回调提供者，
     * 使得AI智能体可以通过自然语言指令调用文章处理能力。</p>
     *
     * <h3>实现特性：</h3>
     * <ul>
     *   <li>基于方法级工具注册机制，自动暴露标注了@ToolMethod的端点</li>
     *   <li>支持动态工具发现，与Spring AI的Function Calling机制无缝集成</li>
     *   <li>工具方法支持参数自动类型转换（JSON Schema → Java Type）</li>
     * </ul>
     *
     * @param articleInfoTools 文章信息工具集合（需实现具体工具方法）
     * @return ToolCallbackProvider Spring AI工具回调提供者实例
     * @author Devil
     * @version 1.0.0
     * @see ArticleInfoTools 具体工具方法实现类
     * @see MethodToolCallbackProvider 方法级工具注册器
     * @since 2025/4/11
     */
    @Bean
    public ToolCallbackProvider articleInfoProvider(ArticleInfoTools articleInfoTools) {
        return MethodToolCallbackProvider.builder()
                .toolObjects(articleInfoTools)  // 注入实现了@ToolMethod注解的工具类
                .build();
    }
}
